23

» WarCraft 3 / Триггер на дроп

Похожие вопросы:

ответ
Не поленился, нашел:
Пора пилить статью на эту тему.
ответ
VetsaN, таких событий нету
надо записывать все предметы в бд и периодическим таймером отслеживать их состояние
смерть предмета можно отследить с помощью TriggerRegisterDeathEvent но её использование нежелательно
либо делай все предметы юнитами
вот статья про бд

23

» WarCraft 3 / Редактор

Похожие вопросы:

ответ
Делать свой ИИ, либо в редакторе ИИ, либо писать самому.
Ещё можешь дописать своих юнитов в стандартные скрипты.
ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
www.wc3c.net/tools/specs тут есть
NEW Frozen Throne expansion pack format of "war3map.w3u / w3t / w3b / w3d / w3a / w3h / w3q" The object data files (thanks PitzerMike):

23

» WarCraft 3 / Перенос карты

Похожие вопросы:

ответ
~8gabriel8:
Тут возможно четыре варианта:
  • Смотришь карты в кампании, а весь импорт находится в редакторе кампании, а не в карте;
  • Есть дополнительный mpq-архив с моделями и текстурами, который может самоподключаться, если расширение mix, asi, m3d, flt и какие-то ещё xgm.guru/p/wc3/advanced-mix-archive;
  • Ты просто не видел прежде этих моделей, а они входят в состав варика;
  • Возможен вариант, когда модели и текстуры у тебя на компе, к ним указан путь, начиная с буквы диска, но этот вариант мне кажется наименее вероятным, просто человек как-то пожаловался, что у него всё в игре отображается, а у друга нет, как раз в этом причина проблемы оказалась.

Ах да, ещё один вариант теоретически возможен, когда в карту добавили файлы, а в списке импорта их удалили, но проверять это на практике не приходилось.
ответ
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.

BartSi, каким конвертером 1.31 -> 1.26 пользовался?

Hodor, твой конвертер случайно не шаманит с камерами?
ответ
Смотри ресурсы пользователя Hodor

Прям на главной ссылка Конвертер карты в 1.26
ответ
Razor_dex, сконвертируй карту, потом открой в стандартном 1.26 редакторе, удали комментарий Рок Лии\Otome Renge
Для гуи-гигантов это типичная болячка, просто битый комментарий который содержит в себе информацию о нескольких действиях, считай как обычный триггер только отображается как комментарий
Возникает такое скорее всего при копировании

P.S. странно что редакторы до 1.31 не обращают внимания на такой баг

23

» WarCraft 3 / Отследить высоту юнита

Похожие вопросы:

ответ
Кароч
есть инфа
что если хочешь стандартный скилл с небольшим изменением
но не можешь отловить его цели
то можно тупо ловить урон
при этом кастуя скилл с даммика
и вылавливать урон только от даммика
да?
Но это вариант для тех кому лень...
а тебе я так вижу не лень

23

» WarCraft 3 / Краш карты при загрузке

Похожие вопросы:

ответ
А во, нашёл - атвор нафига пихать юнитов за границу обзора? От того и вылетает, убери всех юнитов с краёв карты, ваще чтобы даже близко не было. Так же увеличь границы карты, чтобы всё влезло.
По-моему дело в юнитах красного игрока. Удалив этот отряд орков с огром все ок работает. Перемещение не помогает.
ответ
MPQ Master'ом открывается
там и искать нужную модель и удалять
ответ
Крашлог и карту желательно, мб где то пропустили скобку?
ответ
Нашёл иной способ, всё оказалось куда легче)

23

» WarCraft 3 / Вопросы по редактору

Похожие вопросы:

ответ
Ты добавлял кости? Или через "повышение урона (улучшение)"? Значение последнего у юнита помечено — это добавится "базовый урон".
ответ
"Приоритет" для ИИ, "Построение" отвечает за расположение в отряде (когда выделяешь группу юнитов на карте: герои, ближние, дальние и т.д.)
ответ
Насколько я понял, тебе нужно просто сменить текстуру. Для этого тебе по меньшей мере нужна текстура. Можно взять либо стандартную, либо создать самому (что довольно просто, если знать как).
Чтобы создать текстуру, возьми любое изображение, открой его в ФШ и сохрани как tga 32 бит с размером до 512х512 (вроде бы можно делать любой размер, не превышающий 1024х768, но я советую сохранять пропорции и делать размер не больше 512х512, или кратных половине этого числа (256/128/64/32) , за тем открой в War3 Image Extractor и переведи формат tga в blp. Потом открываешь модельку - редактор текстур и переименовываешь нужную текстуру в ту которая тебе нужна (они должны быть в одной папке) жмешь - Enter - .

23

» WarCraft 3 / Видимость воды

Похожие вопросы:

ответ
Вообще ai скрипты в WC3 довольно деревянные. Вам нужен универсальный ИИ, или для конкретной карты? Если второе, то проще напрямую через обычный jass указывать где должно строить верфи и прочее.
Кстати, сами Близзы не смогли решить проблему с транспортными кораблями: в мили ИИ их не нанимает и не строит, как и в кампании. Используются либо дирижабли, либо амфибии. Корабли строятся только боевые, по принципу казарм. Проверьте сами четвертую главу за нежить в TFT.
ответ
ответ
~8gabriel8:
Сделал через Integer Comparsion, где количество нужных юнитов, рыбацких лодок, в области над магическим кругом больше 0.
ответ
Steal nerves:

23

» WarCraft 3 / Переменная и целочисленная

Похожие вопросы:

ответ
Что такое "назначить пользовательский параметр юнита или предмета" и как им пользоваться?
Используется для сохранения каких-нибудь своих данных в этот конкретный предмет или юнита
Добрые люди, как присвоить глобальной переменной (целочисленной) цену определенного предмета (так чтобы если изменить цену в редакторе объектов, то в редакторе триггеров она сама изменялась) или какая главная характеристика определенного героя (разум, сила, ловкость).
Никак, только руками указывать или использовать это xgm.guru/p/fly-data
ответ
Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
ответ
8gabriel8,
Если что, скидывай карту.
Беда в том, что эта карта из кампании, там всё очень много весит, потому не буду.
PT153,
ну как там дела?
Пока никак, ибо из-за сессии отложил редактор в сторону (собственно, даже сюда времени зайти не было, к сожалению)
Рад, что ты предложил выход, но я, боюсь, твой код себе никак не перенесу, ибо, как писал в вопросе, лишь на GUI могу работать.
8gabriel8,
мне кажется, проблема не в этом триггере, а в другом, который запускает триггеры и таймеры.
Триггер, запускающий таймер, вряд ли многое испортить может
Мдаааа... Я свою ошибку таки нашёл. Она была в самом тупом месте из всех возможных.
Я действительно не понимаю, это у меня голова не работает совершенно, или в редакторе какие-то баги
Цитата из вопроса, у меня не работает голова.
Так вот, это я дурак полный.
Запихнул обнуление своей переменной ВНИМАНИЕ! в триггер, который игрокам-компьютерам каждые 2 секунды обновляет ресурсы. А вместе с этим и обнуляет снова и снова мою переменную. Обнаружил ли я это через дебаги? Нет, просто от скуки и безнадёжности положения начал прокручивать и листать все триггеры.
Спасибо всем, кто пытался помочь, это было очень приятно) Мне жаль, что вы ломали голову и тратили время впустую по моей глупости и невнимательности.
ответ
Простым способом это не сделаешь, т.к нельзя отловить кол-во полученного золото с убийства (патч 1.26). Но, если игрок не получает больше неоткуда золото, кроме убийства крипов, то можно ловить изменения голды игрока.
ответ
Black Soul:
Вот пример того, как можно сделать:
Карта:

23

» WarCraft 3 / Атака по деревьям

Похожие вопросы:

ответ
Eota: Exodus
оригинальный автор DarnYak
поищи его последнюю карту...
помню раньше ещё был оф. сайт... но он вроде упал...
поиграть в эту карту еще. Никто из друзей и знакомых не помнит, но не приснилась же мне эта карта!
не приснилась... хорошая карта, но толпой играть слишком легко...

P.S. а нет, сайт ещё жив, кажется
ответ
в доте фрог решил просто превращением тини в модеьл с деревом, возможно нормального решения просто нет
ответ
надо триггерно снимать таг alternate с дерева
хотя по идеи можно настроить так, что бы нормально и без этого работало
вроде если формы местами поменять

23

» WarCraft 3 / на 1.31 не запускаются карты с 1.26

Похожие вопросы:

ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.
ответ
Не сов сем по теме, но близко - вот такое можно реализовать на новых функциях 1.31
Увы, полноценного инвентаря на аналогичных функциях пока не выкладывали в общий доступ, каждый пилит себе свою версию.
ответ
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.

BartSi, каким конвертером 1.31 -> 1.26 пользовался?

Hodor, твой конвертер случайно не шаманит с камерами?

23

» WarCraft 3 / Проблема инициализации карты

Похожие вопросы:

ответ
nvc123:
Nyanta, для начала дебаг сделать как написано в статье
Сделал. Триггер работает как нужно. При входе всегда пишет "Вход!", при выходе - "Выход!". Порядок текста не меняется.
В общем, проблема, почему-то, была в названии анимации. Открыл модель через MdlVis и назвал анимации "родными" словами Stand, Walk, Death. Стало работать как надо.
Спасибо Rare за
Rare:
ставь скорость анимации на 0%
И nvc123 за то, что натолкнул на мысль этим)
nvc123:
конфликт триггеров,неправильный проигрыш анимаций
ответ
скорее всего ты при инициализации проверяешь статус слота игрока, а этого делать нини ))) ибо это частенько может приводить к десинку, вот эти игроки и получают его благополучно во время инициализации)))
ответ
Свиборг:
Fakov, насчёт фризов... Имеются ввиду фризы во время загрузки карты или же непосредственно в ходе игры? А нюансы, например, какие? Сама по себе система работает, главное, чтоб не фризило-крашило.
от большого кол-ва забитых массивов не должно лагать, т.к по сравнению с реальной нагрузкой - это копейки
Свиборг:
UrsaBoss, я все эти переменные делал на гуи, не на жассе.
и учти, тебе придется сделать отдельный поток для инициализации твоих массивов, это чтобы исключить вероятность того, что завершится поток main из за лимита операций
Вот инструкция если ты не шаришь в jass:
На скриншоте 1, там где
call ExecuteFunc("Trig_MyTrig_Actions")
Это Custom Script, а MyTrig - это название нужного тебе триггера
На скриншоте 2 уже твой триггер с инициализацией массива, главное в событиях ничего не ставь
ответ
~8gabriel8:
Есть в триггерах категория Видимость, там создаёшь модификатор видимости для области (прямоугольник) или радиуса (круг), которому ставишь значение Видимость, потом, например, ставишь действие Wait (ждать) 5 секунд, потом отключаешь этот модификатор видимости. Если всё равно будет видимость, то создай на том месте ещё модификатор со значением Туман войны.
Чёрная маска-когда почти ничего не видно.
Туман войны-когда место разведано, но просто затемнено, так как юнитов твоих рядом нет.
Видимость-когда почти всё видно.

23

» Администрация XGM / Было бы неплохо?..

Похожие вопросы:

ответ
Если при поиске ресурсов к адресной строке добавить
?sortfield=datelineasc
то порядок показа по дате будет "от старых к новым"
остальные фильтры пока недоступны
Пример: xgm.guru/p/wc3/resources?sortfield=datelineasc
ответ

23

» WarCraft 3 / Вот такая проблема с триггерами

Похожие вопросы:

ответ
Gerhop, проверь занесены ли даммики в группу. Если занесены и триггер у тебя включен, то хоть что-то должно происходить. НО на гуи такое сделать сложно и нефиг делать хотя бы из-за того, что играть ты сможешь ну максимум минут 20. Потом вар скрашится на рабочий стол.
ответ
старый запрос
ответ
~8gabriel8:
Пока нет желания разбираться, что у тебя так, а что не так. Но вижу, что переменная Window не назначена окну, а ещё как бы создаются в цикле одновременно 10 окон, которые потом все одновременно ждут 50 секунд. Вот скрин действий триггера вместо двух твоих, секунда ожидания поставлена для того, чтобы увидеть пропадание окна таймера.
ответ
Ломается, потому что перезаписываются переменные. Используй локальные переменные. Вот ссылка на статью: xgm.guru/p/wc3/jass_local_vars.
ответ
~8gabriel8:
Это событие срабатывает лишь при старте карты, чтобы сделать срабатывание, когда после потасовки остаётся один юнит, логично было бы сделать событие Generic unit Умирает. В условии учитываются не только живые юниты, но и их трупы, пока не разложатся, то есть будет срабатывать событие юнит Умирает, в условии юнитов в области будет больше 1, так как будут считаться мёртвые юниты, триггер так и не будет срабатывать, если через минуту какой-то юнит на карте не умрёт. Потому в условии нужно указывать не просто юнитов в области, а юниты в области matching condition, где поставишь (Matching unit) is alive равно Да. А чтобы не учитывались здания и призванные юниты, нужно вместо условия (Matching unit) is alive равно Да выбрать в низу списка And, появится два условия, в первое ставишь (Matching unit) is alive равно Да, во второе опять And и аналогично выбираешь, (Matching unit) is Здание равно Нет и что-то такое же на призванных (summon).
Только в действии тоже укажи, что живой, не Здание и не призванный, а то кого-то из них может убить.

23

» WarCraft 3 / Ошибка при сохранении карты...

Похожие вопросы:

ответ
Может надо переустановить варик? Просто в Way of Others'е у меня было именно так я переустановил его и всё нормально.
А карту сохранить в другой папке.
ответ
N7 Molot:
Вот оптимальные настройки, скорей всего в них ошибка.
ответ
Steal nerves:
Короче порылся в ХГМ, потыкал, все испробывал, и сам нашел ответ, вот несколько моментов для того, чтобы заработал:
  1. Требуется установленный Warcraft 3: The Frozen Throne последней версии 1.26a. Скачайте нормальный варкрафт 3, а то попадаются урезанные или нерабочие версии. Лучше оригинальную версии приобрести, и обновить. Хотя пиратки тоже неплохи. Вот использую сборкой от R.G. Mechanics
  2. Путь к программе НЕ ДОЛЖЕН содержать русских символов
  3. Совершайте установку в отдельную от Warcraft 3 папку
  4. Рекомендуется приостановить антивирусные программы до установки, потом выполнить установку, затем добавить папку c JNGP в исключения, и потом только снова включить антивирусы. Эта программа вторгается в процесс worldedit.exe, поэтому может считаться вредоносной
  5. Не трогайте файл worldedit121.exe, он должен быть и в папке игры и в папке JNGP
  6. Сначала "Сохранить карту", только потом "Проверка карты", а ещё иногда бывает лучше сохранять пару раз
Выше, это стандартное описание для работы. Если не сработает, пробуем вот, что:
  1. Выставляем оптимальные настройки к JNGP, указанные на скрине (см. ссылку) xgm.guru/forum/showthread.php?t=13118 Обычно, эти настройки должны быть изначально после установки JNGP (ну мало ли пригодятся)
Теперь суть моей проблемы (не знаю, что из этих ниже пунктов сработало, но сработало):
  1. Я установил игру и JNGP на рабочий стол. Потому что на диске С, в папках типа Program Files.(x86) и др. блокирует браундмер. Обычно требует назойливо для работы права администратора, очень раздражает. Но сомневаюсь, что заработало из-за этого. Раньше не мешало нисколько.
  2. Запустить JNGP в режим совместимости. Заходим в свойство exe-шника. Поставил семерку.
  3. Если UMS изначально включен, то выключить его и включить (Enable UMS). Потом перезапустить WE. Скорее всего из-за него.
Из-за UMS также бывают ошибки: могут выскачить 2-3 окна : что отсутствует TriggerClearActions и layerAll. Когда пропускаешь эти окна, просто нажав на ок, затем появляется ошибка с памятью и уже потом закрывается редактор. Происходят такие ошибки, если пытаешься открыть обычным редактором карту, отредактированную в JNGP. Такая ошибка происходит, если некорректно настроен UMS (выкл. потом вкл.). Такая ошибка происходит, если открыть обычным редактором взломанную карту, которая наверняка сделана в UMS и использует необычный jass и прочие преимущества JNGP. Ошибки с UMS могут иногда происходить, поэтому скорее всего пункт 10 поможет
  1. Если UMS перестает работать (некорректно работает), а 10 пункт не помогает. То есть плагин UMS по каким-то причинам не запускается, а JNGP стоит галочка напротив UMS (говорит, что включен). Короче узнать, что он запущен, можно при открытий редактора вместо стандартного окна выскакивает окно UMS. Если не выскакивает, надо попробовать завести снова работать. Плагин может по каким-то причинам сломаться (один раз баловался в настройках JNGP). Пробуйте потом удалить JNGP и потом заново переустановить. Или выкл. и вкл, UMS затем выйти из jngp, удалить и заново переустановить
пп
ответ
Steal nerves:
приходиться угадывать
так не поймешь, чего у тебя там не работает. Опиши ПОДРОБНО чего сделать не так, что она не работает. раньше работала?
Скидывай скрин ошибки, карту. В папке варкрафт есть папка "Errors" там текстовик нужно найти.
предположение
Пробовал выключить или временно удалить все триггеры? если без триггеров нормально работает - вывод?
похоже автор какую-нибудь карту открыл, отредактировал ландшафт. Она там мб, к примеру, на cjass написано. попробуй xgm.guru/p/wc3/178775 Если ошибка будет на jngp, там есть в папке jngp есть папка "logs" тоже ошибки хранит
Еще может быть нужно включить UMS. Даже, если без триггеров не сохраняет, возможно какие-нибудь за какие-нибудь ограничения (кол-во деревьев, размер карты и прочее).
ответ
С мемхаком это реализуется очень просто.
RenderEdge мемхак
Warcraft 1.26a
Передвижение W,S,A,D. Режим курсора Q.

23

» WarCraft 3 / угол обзора

Похожие вопросы:

ответ
Соотношение ширины экрана к высоте экрана в Варкрафте всегда 3 : 4. На устройствах с большим разрешением картинка растягивается и на экране можно видеть исключительно тот участок, который бы можно было видеть при текущем FoV на экране с соотношением сторон 3 к 4. Вертикальный FoV находится по формуле:
FoV vertical == 2*Atan(0.75*tan(horizontal FoV/2))
ответ
Примерно так получилось
function Trig_CW_Cast_Actions takes nothing returns nothing
    local unit u    = LoadUnitHandle( какая_нибудь_хештаблица, GetHandleId(GetExpiredTimer()), 0 )
    local real x1   = GetUnitX( u ) //координаты кастера
    local real y1   = GetUnitY( u )
    local real from = 800
    local real a    = GetUnitFacing( u ) //угол поворота юнита
    //local real S = 90 //Ширина угла
    //local real angle = S/2 //Половина ширины угла

    set udg_Angle = a
    set udg_Caster = u
    //set udg_X = angle

    call BJDebugMsg("Угол поворота при касте: "+ R2S(a))

    call GroupEnumUnitsInRange(bj_lastCreatedGroup,x1,y1,from, Condition(function TZZ))
    //call ForGroup( bj_lastCreatedGroup, function TZZ )
    call GroupClear(bj_lastCreatedGroup)
    
    set u = null
endfunction

function TimerOff takes nothing returns nothing
    local timer t  = GetExpiredTimer()
    local timer t2 = LoadTimerHandle( какая_нибудь_хештаблица, GetHandleId(t), 0 )
    
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t)  )
    call FlushChildHashtable( какая_нибудь_хештаблица, GetHandleId(t2) )
    call DestroyTimer( t  )
    call DestroyTimer( t2 )
    
    set t  = null
    set t2 = null
endfunction

function Timer takes nothing returns nothing
    local timer t  = CreateTimer()
    local timer t2 = CreateTimer()
    local unit  u  = GetTriggerUnit()
    
    call SaveUnitHandle( какая_нибудь_хештаблица, GetHandleId( t ), 0, u )
    call TimerStart( t, /*Периодичность*/0.04, true, Trig_CW_Cast_Actions )
    
    call SaveTimerHandle( какая_нибудь_хештаблица, GetHandleId(t2), 0, t )
    call TimerStart( t2, /*Время которое будет работать таймер*/36, false, TimerOff )
    
    set t  = null
    set t2 = null
    set u  = null
endfunction

//===========================================================================
function InitTrig_Cast takes nothing returns nothing
    set gg_trg_Cast = CreateTrigger(  )
    set bj_lastCreatedGroup = CreateGroup()
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Cast, Condition( function Trig_CW_Cast_Conditions ) )
    call TriggerAddAction( gg_trg_Cast, function Timer )
endfunction
ответ
Если у тебя рпг , то можешь заменить патруль на поворот камеры в указанную точку
Пример

клик рядом с героем - поворот
клик > 300 - таргет на точку
клик на юнита - таргет на юнита

23

» WarCraft 3 / Заряды способности

Похожие вопросы:

ответ
Можно сделать через разные способности и уровни способности.
Способность 1 - уровни 1, 2, 3 - с описанием: "..осталось [1, 2, 3] заряда".
Способность 2 - уровень 1 - неактивная способность.
Логическая переменная (назовём её Cooldown).
Таймер - время = времени восстановления заряда
Триггер 1
Событие - Применение способности.
Условие - Применяемая способность = Способность 1
Действие - Установить применившему уровень Способности 1 = уровень Способности 1 минус 1.
Если Cooldown = false, то
  • Запустить таймер
  • Установить Cooldown = true
Если уровень Способности 1 = 0, то
  • Удалить Способность 1 и добавить Способность 2
Триггер 2
Событие - Время - таймер истекает.
Действие - Если уровень Способности 1 больше нуля, то
  • Установить уровень Способности 1 = уровень Способности 1 плюс 1;
  • Если уровень Способности 1 = 3, то установить Cooldown = false
. . . . . . . . Иначе - запустить таймер
  • Иначе - удалить герою Способность 2, добавить Способность 1, запустить таймер.
ответ
по умолчанию отрисовывается только для пары способностей, я взял ракету и заблокировал её использование. это редактирование рид-онли памяти, поэтому крайне желательно иметь восстановление адресов через длл
function GetEvasionOrderIdFunctionData takes nothing returns nothing
	local integer a
	local integer oldprotection
	call UnitAddAbility(SentFountain,'AEev')
	set a=GetUnitAbility(SentFountain,'AEev')
	if a>0 then
		set pEvasionOrderIdFunction=RMem(RMem(a)+0x30C)
		if pEvasionOrderIdFunction>GameDLL then
			call UnitAddAbility(SentFountain,'A3HQ')
			set a=GetUnitAbility(SentFountain,'A3HQ')
			if a>0 then
				set a=RMem(a)+0x30C
				set oldprotection=ChangeOffsetProtection(a,4,0x40)
				call WMem(a,pEvasionOrderIdFunction)
				call ChangeOffsetProtection(a,4,oldprotection)
			endif
			call UnitRemoveAbility(SentFountain,'A3HQ')
		endif
	else
//port value from AEev to Afla to disable icons
	endif
	call UnitRemoveAbility(SentFountain,'AEev')
endfunction
где SentFountain - любой юнит, которому нужно вручить абилки для их подзагрузки; AEev - уклонение, чтобы взять адрес "нерабочей" кнопки, "A3HQ" - любая абилка на базе ракеты, тоже для получения адреса
Потом - если у ракеты 0 зарядов изначально, счетчик скрывается, поэтому
function FixChargesIndicator takes unit u, integer id returns nothing
//if 0 charges by default indicator is hidden by the flag, need to reset it
	set LastConvertedHandle=GetUnitAbility(u,id)
	if LastConvertedHandle>0 then
		call WMem(LastConvertedHandle+0x20,0)
	endif
endfunction
Ну и управление
function RedrawSkillAfterChargeModify takes integer a returns nothing
	local integer b=RMem(RMem(a)+0x1C4)
	call CallThisCallWith3Args(b,a,0,852290)
endfunction

function AddAbilityCharges takes unit u, integer id, integer c returns nothing
	local integer a=GetUnitAbility(u,id)
	if a>0 then
		call WMem(a+0x124,RMem(a+0x124)+c)
		call RedrawSkillAfterChargeModify(a)
	endif
endfunction

function AddAbilityChargesByAddr takes integer a, integer d, unit u returns nothing
	if a>0 then
		call WMem(a+0x124,RMem(a+0x124)+d)
		call RedrawSkillAfterChargeModify(a)
	endif
endfunction

function SetAbilityChargesByAddr takes integer a, integer d returns nothing
	if a>0 then
		call WMem(a+0x124,d)
	endif
endfunction

function GetAbilityCharges takes unit u, integer id returns integer
	local integer a=GetUnitAbility(u,id)
	if a>0 then
		return RMem(a+0x124)
	endif
	return 0
endfunction

function GetAbilityChargesByAddr takes integer a returns integer
	if a>0 then
		return RMem(a+0x124)
	endif
	return 0
endfunction
ответ
Steal nerves:
Summon-абилки
Вызывают существ (можно отловить через событие - "юнит призывает боевую единицу" или через событие "юнит вошел в зону" с проверкой баффа, либо классификации "иллюзия" или "вызванный" и прочее):

ПРИЗЫВ: безграничное число вызванных (вызванные юниты не умирают, если кастер умрет)

Дух воды 'AHwe' - вызывает духов воды (можно указать кол-во вызванных). Появляется рядом с кастером.
Дух Океана 'ACwe' - вызывает духов океана (можно указать кол-во вызванных). Появляется рядом с кастером.
Разведка 'AEst' - вызывает сову-разведчицу (можно указать кол-во вызванных). Появляется рядом с кастером.
Возмездие 'AEsv' - вызывает душу возмездия (можно указать кол-во вызванных). Появляется рядом с кастером.
Феникс 'AHpx' - вызывает феникса (можно указать кол-во вызванных). Появляется рядом с кастером. Больше одного феникса нельзя призвать, заменяется новым. Дело не в вызываемой абилке (скорее всего в самом фениксе), так как пробовал поменять на другого типа юнита, и тут безграничное число юнитов вызывает.
Медведь 'ANsg' - вызывает медведя (можно указать кол-во вызванных). Появляется рядом с кастером.
Кабан 'ANsq'/'Arsq' - вызывает кабана (можно указать кол-во вызванных). Появляется рядом с кастером.
Щупальце 'ACtn' - вызывает щупальце (можно указать кол-во вызванных). Появляется рядом с кастером.
Призыв слуг 'Aslp'/'ANwm' - вызывает морских существ, готовых прислуживаться (можно указать кол-во вызванных). Появляется рядом с кастером.
Сокол 'ANsw' - призывает сокола (можно указать кол-во вызванных). Появляется рядом с кастером.
Заводной зверь 'Amec' - вызывает нейтральную зверушку (здесь не указано ничего, и нельзя указать какой тип призывается. Всегда рандомно вызывает зверушку: это может быть кроликом, лягушкой, енотом, цыпленком, свиньей, овца (часто выпадают именно эти зверьки, возможно есть другие, но это не попадались мне). Вшито в игре где-то). Зато можно указать количество вызываемых зверей. Эта абилка вставлена в одноразовый предмет. Вызывает навсегда (длительность задано на "ноль", но можно задать время действия вызова). Вызывает безграничное число юнитов. Это не совсем нейтральное существо, оно может подчиняться вашим указаниям (у нее есть, конечно, бродилка. чтоб не стояло на месте). Это существо больше создано для разведки, вы можете создать неподалеку от базы противника и заслать на базу. Враги не трогают нейтралов. В чем суть этой абилки? Если создать изначально цыпленка на карте, и заслать на базу врага, этого цыпленка тут же заметят как врага, и сразу же прирежут. А если вызвать через эту способность, то враг игнорит вашу зверушку (в некоторых играх против ботов надо попробовать сделать препятствие - если узкие проходы просто загородить цыплятами, то возможно пройти будет сложно). Единственное, что настоящий игрок может заподозрить и убить.
Тварь из Недр 'ANlm' - вызывает лавовых духов огня, обитающих в магме (можно указать кол-во вызванных). Появляется рядом с кастером. Эта абилка отличается от других, поскольку она особенная. Описание: "Нанося урон жертве, она забирает часть жизненной силы. Накопив достаточно жизненной силы, она порождает вторую такую тварь" (при чем это не отслеживается событием "юнит призывает боевую единицу", отслеживает только призыв первой твари, а вот деление нет, деление отслеживается только событием "юнит входит в область"). Короче делится на две твари. Хотя по сути она не похищает жизнь, в абилке настройки ловят на количество ударов, после которого юнит делением вызывает
Характеристики:
"Данные - Деление: количество атак" - кол-во ударов, после которого тварь начнет делиться на себе подобных. Можно сразу проверить, поставив 1.
"Данные - Деление: доп. срок жизни" - таймер жизни. Это значение при делении продлевает время жизни существу, которое вызвало деление, и столько же добавляет вызванному существу.
"Данные - фактор здоровья" - процент здоровья от макс. запаса. Если первый юнит будет покосан (ранен), то при делений второй юнит имеет точно такое же здоровье. Однако, поле "фактор здоровья" пополняем первому и второму юниту часть здоровья. В этом поле стоит 0.5, значит половина от запаса пополняет обоим. (0.00 - ничего не даст, а при отрицательном значений юниты умирают)
"Данные - Задержка деления" - задержка перед тем как поделится на две части. Тварь начинает трясти, а потом делится на две части.
"Данные - количество поколений" - кастер вызвает одну тварь, назовем ее основной. Кастер повторно основных юнитов может безгранично множество вызвать. А основной юнит может вызвать делением других таких же побочных (назову их так, они ни чем не отличаются от основного. Начиная с 4 поколения, у них меняется изображение: с духа на огонька, а в остальном характеристики те же). Число поколение так понял, это сколько раз может расколоться. Например, кол-во поколений = 3, основной юнит - первое поколение, делится на два, теперь эти два юнита - второе поколение, делятся, становится 4 юнита, эти 4 юнита - третье поколение (и больше делиться не могут). Мне неизвестно точно, делится ли юнит на двух новых, или просто вызвает (почкованием размножается), больше похоже, что второе. ставил кол-во поколений 5, и поделило так много юнитов, стало всего 16. Ставил кол-во поколений 6, стало 32.
ФОРМУЛА геометрической прогрессий - макс. кол-во юнитов:
q = 2 (мы знаем, что с каждым шагом их становится в два раза больше)
b1 = 1 (сколько вначале вызываем)
bn = b1 * q ^ n-1 - формула
b5 = b1 * q ^ 5-1 = 1 * 2 ^ 4 = 16
b6 = b1 * q ^ 6-1 = 1 * 2 ^ 6 = 32
Как писал, основных может вызвать много, а значит, и с ними будет также множество побочных при делений (как видим кол-во поколений не влияет на всех, только на определенную группу).

ПРИЗЫВ: Призвать больше чем указано не может, заменяется новым. Здесь тоже не умирают, если кастер сдох

Дух волка 'AOsf'/'ACsf'/'ACs7' - вызывает духов волков. (можно указать кол-во вызванных). Появляется рядом с кастером.
Дух вепря 'ACs9' - вызывает вепря (можно указать кол-во вызванных). Появляется рядом с кастером.
Медведь (Рексар) 'Arsg' - вызывает медведя (можно указать кол-во вызванных). Появляется рядом с кастером.
Астральный зверь 'ACs8' - вызывает адских охотников (можно указать кол-во вызванных). Появляется рядом с кастером.
Охотник за головами (предмет) 'AIsh' - вызывает берсерков (можно указать кол-во вызванных). Появляется рядом с кастером.
Призыв слуг (предмет) 'AIwm' - призывает морлоков (можно указать кол-во вызванных). Появляется рядом с кастером.

ПРИЗЫВ: Предметные (здесь вы можете призвать два разных типа войск в отличий от других призывов. Эта абилки предметов одинаковы, даже приказы одинаковы. Могут вызвать бесконечное число юнитов, то есть не заменяются новыми):

Предмет: Вызов Адской гончей 'AIfh'
Предмет: Вызов Привратника Ада 'AIfu'
Предмет: Вызов Призрачного рыцаря 'AIir'
Предмет: Вызов беорна 'AIff'
Предмет: Вызов беорна-воителя 'AIuw'
Предмет: Вызов каменного голема 'AIfr'
Предмет: Вызов красного дракона 'AIfd'
Предмет: Вызов скелета 'AIfs'
Вроде как тоже не заметил уничтожения вызванного юнита после смерти героя

ПРИЗЫВ: установка вардов в точку

Невидимый страж 'Aeye' - вард духов с большим зеленым глазом, установленный на землю, наблюдает в течении длительного периода времени. Видит также невидимые войска. Устанавливается в указанную точку. Примечание: эта абилка наделяет призываемого юнита постоянной невидимостью. есть у варда скилл "Дух(видимый)" 'Aeth', который не делает невидимый, а просто наделяет указанный в характеристиках данными. Вызывает только одного.
Колдовская ловушка 'Asta' - вард-тотем. Эта способность создает вокруг юнита ловушку, которая обездвиживает (оглушает, stun) противников. Прицел, аналогично с духом-целителем, действует по области. Но этот радиус круг от прицела настраивается в самой абилке. Вызывает только одного. Примечание: эта абилка наделяет призываемого юнита невидимостью, правда не постоянная она, но можно настроить время захода в инвиз. Вот все настройки: Длительность оглушения - сколько продлится дебафф оглушения на обычных юнитах (не героях) прежде чем пройдет. Длительность воздействия (герой) - сколько продлится дебафф оглушения на герое. Длительность нормальная - время жизни призванного юнита. Задержка запуска - время после призыва и до того, как он станет невидимым. Радиус обнаружения - расстояние, на котором может быть обнаружен противник и начнет сработка ловушки. Радиус взрыва - область оглушения юнитов. Радиус оглушения у колдовской ловушки слишком маленький, поэтому не всегда кажется срабатывает (на самом деле, это работает на медленных юнитах или ловушки эффективны против милишников). Как только капкан захлопнется, тотем исчезает. Можете продлевать оглушение, чтобы юнит не сбежал, поджав хвост. Это нужно ставить новую ловушку, правда, зависит это еще и от наличия маны, и кулдауна абилки. Ловушка не срабатывает на невидимых юнитов. Можно указать юниту с напару с этой абилки "Урон от взрыва", "Урон от взрыва" срабатывает после смерти носителя, она наносит всем урона. Так как колдовская ловушка не наносит никакого урона, а лишь оглушает, то это хорошо взаимодействуется.
Дух-целитель (знахарь) 'Ahwd'/'AChw'/'AIhw' - вард духов, который устанавливается на землю знахарем. Лечит всех вокруг. Этот вызов устанавливается в указанную точку (кстати, мне так и не удалось убрать круг прицела (причем красочный у орков), или хотя бы изменить радиус круга от прицела, но это легко обойти. Канал + триггеры с dummy-кастом в точку). Вызывает только одного.
Сторожевая змея 'AOsw'/'Arsw' - вызов призрачной змеи, которая атакует любого рядышком противника. Устанавливается в указанную точку. (можно указать кол-во вызванных)
Руна стража 'APwt' - призывает неуязвимого варда-духа, наблюдающего за местностью. Этот призыв делает юнита невидимым (как и у абилки "Невидимый страж").
Темные врата 'ANdp' - в указанную точку вызывает несколько существ. Кол-во вызываемых всегда рандомно (от минимального до максимального значения. в настройках абилки указаны минимальное и максимальное значение). Здесь также можно указать несколько типов существ, это как раз необычно. Типы существ тоже рандомно спавнятся. Например, вызываю 5 существ: это может быть 3 пехотинца и 2 стрелка, так может быть и по-другому 2 стрелка и 3 пехотинца, или 4 пехотинца и 1 стрелок и так далее.
Торнадо 'ANto' - в указанную точку призывается торнадо (призвать можно только одно торнадо). Пока кастер произносит заклинания (делает channeling-анимации), вы можете управлять торнадо. Но учтите, торнадо можно прервать, если кастер прекратит кастовать. Торнадо можно заставить двигаться в любую точку, оно дамажит всех вокруг (у нее аура дамага, аура понижения скоростей, и аура, которая подбрасывает вверх вихрем).

ПРИЗЫВ: разделение юнитов

Три Стихии 'ANef'/'Acef' - герой разделяется на три существа (сам герой пропадает). Герой превращается в трех воинов, наделенных силами Огня, Земли, Ветра. Призыв трех существ ловится событием "юнит призывает боевую единицу". Если хоть один из трех вызванных существ выживет, то герой возродится. Действие завершения заклинания (это когда суммоны исчезнут, а герой появится) ловится "Юнит прекращает/завершает действие заклинания". Даже, если один из выживший будет сильно ранен, герой возродится в полном запасе хп.

ПРИЗЫВ: призыв энтов из деревьев

Сила природы 'AEfn'/'ACfr' - вызывает энтов из деревьев в указанной области, деревья как бы вырубаются, типа ожили. Можно указать количество энтов. Правда, не всегда можно вызвать нужное количество, ведь зависит от количества деревьев в указанной области. Если в абилки указано, что можно призвать 2 энтов, но у вас в указанной области стоит одно дерево, то естественно вызовите одного. Также эта заклинание вырубает все деревья, и не важно сколько энтов указано (будь 1 энт, то сможет вс деревья вырубить). Иногда энты могут застрять в деревьях, это из-за того, что радиус указанной области маленький или целились в гущу деревьев, из-за чего не выйти.

превращение в зомби

Обращение во Тьму 'ANdc'/'SNdc' - сразу пробовал сам разобраться в тестовой карте, но не получается ни на кого нацелиться. Как бы цели не менял, настройки юнитов и цели абилки не ковырял. Но на самом деле все работает. Меня сбил кривой перевод поля. Поле "Конвентирует в расу" - здесь указана раса юнита, юнит которой может превратиться в зомби. По стандарту тут стоит "Все", я подумал, что это все расы, но на самом деле не так. В варике юниты поделены на расы, есть раса "Нежить", "Альянс" и др. Есть также раса "Все" - тоже раса нейтралов. Превращение ловится событием "Юнит призывает боевую единицу". Здесь превращенный юнит не призывается на вашу сторону, он как принадлежал другому игроку, так и принадлежит (но это можно подправить). Единственное, что превратил в другого.

ПРИЗЫВ: призыв при убийстве - ловится событием "юнит призывает боевую единицу"

Призыв не работает на тех, кого нельзя оживить (у юнитов в РО "тип смерти"), короче кто не оставляет трупы.
Гидра 'Aspy'/Молодая Гидра 'Aspt'/Пауки 'Aspd'/ 'Assp'/Скелет 'Asod' - не имеет иконки. при смерти юнита вызывает других юнитов (можно указать кол-во). Обычно вызывает более мелкую версию себя (например гигантская гидра призвала две маленькие гидры)
Паразит 'Acpa'/'ANpa' - внедряет личинку паразита в тело врага, наносит урон, и, если умрет, то вылупляется юнит-паразит (автоприменение работает даже у тех, у кого нет атаки). Можно помочь добить другими юнитами, необязательно, чтобы смерть наступало именно от заклинания. Имеет очень похожие поля с отравляющими абилками, триггер ловит классификацию "отравление". Только вот настройки буфера не работают, чуть что измени в буфере, и не будет работать (там остается без изменений "убить боевую единицу"), короче не получится накладывать эффекты отравления или замедления. В настройках можно настроить снижение скорости боя и передвижения. Дебафф на цели имеет определенное время существования, если развеится, то не получить из него паразита, так как юнит жив, не умер. Если все-таки удаться убить, то после смерти призывается нужный нам юнит-паразит (отслеживается призыва событием "юнит призывает боевую единицу"). Можно указать кол-во призываемых. Этот дебафф нельзя развеить рассеивающим заклинанием. Ежесекундный урон относится к типу атаки "заклинание", не понижается защитой, является магическим уроном
Черная стрела 'ANba'/'ACbk' - Orb, наносят дополнительный урон, вешая дебафф черной стрелы. Этот дебафф остается на противнике несколько секунд, повторная атака продлевает длительность дебаффа. Дебафф ловит смерть юнита (даже, если кто-то другой (не лучник) убьет), заклинание призывает скелетов. Ловится событием "юнит призывает боевую единицу". Может с первого выстрела призвать, если урона будет достаточно чтобы сваншотить (завалить с одного удара), и не нужно тогда никакого дебаффа. Этот дополнительный урон при атаке суммируется с нанесенным уроном героя, относится к типу атаки к тому, что указан в атаке. снижается физической защитой. Является физической атакой с физическим уроном. может использовать милишник. Призыв не работает на тех, кого нельзя оживить (у юнитов в РО "тип смерти"), короче кто не оставляет трупы.
Печать Преисподней 'ANdo' - на указанного юнита вешают дебафф "Печать Преисподней", который ежесекундно наносит урон цели. Самое забавное, что длительность дебаффа задано на ноль (что значит этот дебафф вечен, его нельзя развеять или рассеять. Придеться спокойно ждать смерти, а лучше его убить поскорее.) Этот дебафф еще ловит смерть юнита (не важно отчего умер от заклинания или от руки какого-нибудь вашего левого юнита), и призывает демона "Привратника ада". Это заклинание также запрещает использовать заклинания и предметы, изучать способности, нанимать войска в зданий и изучать исследования (иконки заклинаний, исследований, нанимаемых войск и геройская кнопка "изучить" становятся не активными, даже пассивки не работают (не активны), а предметы не удается выкинуть или использовать). Ежесекундный урон относится к типу атаки "Заклинание", не понижается защитой, является магическим уроном. Урон можно убрать, поставив ноль. И призыв после смерти тоже можно убрать (копируете поле "тип боевой единицы" у способности нежити "Ядовитое облако (Дух)", оно как раз пустое, и вставляете в поле печать преисподней, тогда при смерти не будет появляться демон). Если обычный юнит (не герой) умирает, то он дропает итемы (хотя эт всегда работало). Является универсальным заклинанием, которое к тому же пробивает невосприимчивость к магий (натравить можно)

иллюзии

Иллюзия 'AOmi' - Создание иллюзорного двойника, сбивающего с толку противника. Все заклинания, наложенные на героя, при этом рассеиваются. Призыв двойника тоже считается как призыв. В характеристиках абилки можно настроить иллюзию (получал больше/меньше от противника или вообще ничего не получал от врага, также как и наносить урон врагу больше/меньше или вообще не наносит никакого урона. Одновременно с этим иллюзии теряют на панеле все активные скиллы, остаются только пассивки. В абилке можно настроить, так что вызванные илююзий не могли наносить урон (весь урон обнуляся). Но очень хорошо срабатывает обманка двойников. Например криты будут выдавать обманку, красные цифры будут всплывать, что нанесли урон, а скилл "иллюзия" по стандарту обнуляет нанесенный урон иллюзией. Есть и недостатки с морфом - он тебя выдает: если заранее создать иллюзорного двойника, а самому потом морфнуть в какого-нибудь другого юнита, то оригинал будет в другой форме, в то время как ваш двойник остается таким же. Чтобы иллюзию перевоплотить (морфнуть) используют способность "Превратиться в медведя" 'Abrf' - везде ставите 0.00 еще ставите нормальную форму, то есть ту, которую хотите перевоплотить. В триггерах этот морф сразу даем и тут же убираем. Сработает баг у иллюзии, и они перевоплотятся в другую форму. Сбивает приказ
Предмет: иллюзий 'AIil' - нужно выбрать дружественного юнита, по которому будет создана иллюзия. Призыв двойника тоже считается как призыв. В характеристиках абилки можно настроить иллюзию (получал больше/меньше от противника или вообще ничего не получал от врага, также как и наносить урон врагу больше/меньше или вообще не наносит никакого урона. Одновременно с этим иллюзии теряют на панеле все активные скиллы, остаются только пассивки. В абилке можно настроить, так что вызванные илююзий не могли наносить урон (весь урон обнуляся). Приказ = 852274, строкового приказа не существует.

воскрешение

Воскрешение 'AHre'/предметная: Младшая руна воскрешения 'APrl'/Предмет: Воскрешение 'AIrs'/'AIrx' (эта способность никого не вызывает, а только воскрешает. Но при воскрешении отслеживается призыв через событие). Воскрешает определенное кол-во юнитов (можно указать кол-во оживленных). Требует трупы.
Помощь предков 'Aast' - воскрешает одного ближайщего мертвого минотавра. Действует воскрешение на юнитов с классификацией "Минотавр". Любопытная инфа: воскрешают даже вражеских минотавров, и ожившие встают на вашу сторону (для этого нужно настроить цели абилки ).

гальванизация (что-то похожее на воскрешение)

Гальванизация 'AUan'/'ACad'/'AIhd'/Предмет: Гальванизация 'AIan' - оживляет из мертвых трупов определенное кол-во единиц (можно указать кол-во вызванных), делая их неуязвимыми. И сражаются на вашей стороне, и не важно на чьей стороне они воевали до этого. (могут наследовать улучшения, если до этого на них производил другой игрок улучшения. для этого нужно галочку поставить)

призыв с неба

Огненный голем 'AUin'/'ANin'/'SNin'/Огненный голем (предмет) 'AIin' - с неба в указанную область падает голем, который при падении наносит урона (указано в поле абилки "урон"), кроме того, в указанной области юниты оглушаются (stun) на неопределенное время. Урон от падения относится к типу атаки "Заклинание", не понижается защитой. Является магическим уроном. Можно сделать из этой абилки stun по области, но вместо голема нужно указать невидимого неуязвимого даймика (иначе stun не захочет работать). Кстати, в указанной области хорошо валит деревья, так сказать очищает место посадки
Огненный дождь (из големов) 'ANrc'/'ANr3' - с неба в указанную область в случайные точки обрушиваются несколько големов. В этой абилке стандартно указывают другую абилку 'ANin'. Так понял, эта абилка заставляет кастовать другую абилку несколько раз в случайные точки. Все настройки принимает побочной абилки: длительность существования големов, stun, урон, радиус поражения и оглушения. По стандарту скилл "огненный голем" 'ANin' в указанной области наносит дополнительный урон, оглушая всех (еще и валит деревья). Можно попробовать другие побочные абилки принять, правда большинство не хотят работать через это. Зато работают другие призывы, правда, оглушает остальных (тоже время оглушения указано в побочных). Откуда берет это оглушение, не понятно (если указал абилку "дух воды"). Жалко, что атакующие заклинания не работают. Проигрывает ли кастер channeling-анимацию - неизвестно, является ли это channeling-анимацией? Но призывает последовательно по одному голему, и пока всех не призовет, тогда не прекратить махать руками. значит можно прервать действие, тогда либо не всех големов призовет или вообще никого не успеет призвать.

ПРИЗЫВ: поднятие мертвецов - требует трупы

Оживить мертвых 'Arai'/'ACrd' (автокаст) - автокастовая способность, которая поднимает скелетов из мертвых трупов. требует трупы. Это способность позволяет оживить одновременно несколько видов (например. скелет + скелет-некромант, еще можно указать и их кол-во). Есть в абилке поле "тип войск для проверки" - тут указывается тип, что это поле значит, не знаю (работает без этого).
Оживить мертвых (предмет) 'AIrd' - эта похожая способность с автокастовой со всеми полями. Но задействована в предмете. Можно дать юниту. У него нет строкого приказа. Дебагом выявил числовой id-приказ 852624. Здесь не работает автокаст, точнее его нет - это же предмет.
Трупоеды 'AUcb' (автокаст) - вызывает жука-трупоеда. Работает при наличий трупа. Это способность позволяет оживить одновременно несколько видов (например. скелет + скелет-некромант + еще можно указать и их кол-во. В данный момент там указан один жук-трупоед, а второй тип не указан). Вызывает навсегда, типа длительность 0 стоит. Имеет лимит на вызванных. Есть галочка "Убить после смерти мага" - после смерти кастера вызванные могут умереть (у абилке стоит "нет", значит жукам повезло, не умрут). Тут все же самое, что в скилле "Оживить мертвых", отличие только в том, что убрано поле "тип войск для проверки", добавлено поля "Макс. вызванных юнитов" и "Убить после смерти мага".
Зов Возмездия 'Avng' (автокаст) - вызывает духов возмездия на месте трупа. для работы этого скила требует труп. Можно в настройках установить одновременно два разных типа, и определить их количество. Имеет лимит на вызванных. Абилка в точь-точь похожа на "трупоеды", разница лишь в том, что добавлено еще поле "тип войск для проверки", которое пустует и неизвестно что значит. Здесь вызванные духи существуют определенное время, могут погибнуть после смерти кастера. Галочка "Убить после смерти мага" - итак понятно, а вот как сделать чтобы выжили (см. пример трупоеды)? это работает на постоянных вызванных существ

особенные случаи:

Перерождение 'AOre'/'AOr3'/'ACm'/'ANr2'/'ANrn'
предмет: крест перерождения 'AIrc'
Воин, обладающий этой способностью, возрождается через несколько секунд после гибели. После гибели обычно крест на земле лежит, между смертью и воскрешением есть задержка. Недостаток этого способа в том, то нельзя отловить никаким событием:
проверял, но может быть не точным. Здесь не нашел как отследить.
  • ни "вызывает боевую единицу" (не ловит, хотя логично, мы же не вызываем юнита, а воскрешаем),
  • "юнит становится воскрешаемым" (не понятное событие, хотя склоняюсь к тому, что относится это к другой способности, например способности Артеса "Гальванизация"/ или "воскрешение" паладина),
  • "юнит начинает/прекращает/завершает воскрешение" (это относится к алтарю, когда юнит умирает, игрок заново воскрешает в алтаре),
  • "юнит начинает применять способность/приводит способность в действие/завершает применение способности" (попробовал, но увы нет),
  • "юнит входит в регион .../юнит выходит" (увы нет, обычно когда юнит умирает, он исчезает из карты. Но с этой абилкой остается в игре, крест и тень то тоже остаются),
  • "юнит умирает" (видимо, это не считается в игре смертью)
Воин, обладающий этой способностью, возрождается через несколько секунд после гибели.
В интернете (много чего искал) пишут, что перерождение ловится событием "unit life becomes < 0.0405". Тестировал, и само событие не работает. Можно только периодически проверять с помощью проверки "здоровье меньше 0.0405". Откуда взялось число 0.0405 мне неведомо, дебаг показывает, что у юнита во время реинкарнации 0.00 здоровья. Надежности как бы мало для того, чтобы верить тем (я про число 0.0405). Еще периодически можно проверять классификацией "Мертв (Dead)", "IsUnitType(GetTriggerUnit(), UNIT_TYPE_DEAD)", которая говорит что юнит мертв во время реинкарнации. Все это не работает, так как срабатывает и на обычной смерти (на юните без перерождении срабатывает это, короче ничего не дает это).
Еще одна особенность: вроде во время смерти с предметом "крест перерождения" срабатывает событие юнит "использует предмет"\"использует способность" прокатывают.
Но вот отследить момент, когда юнит умирает и воскрешается, так и не удается (только через костыли). Можно свою систему перерождения сделать.
Примечание: предметная способность от креста перерождения 'AIrc' невидима, даже, если ее дать герою. И эта способность при смерти не срабатывает, видимо связана с предметом. Предположение: чтобы заработала, надо сделать снова ее видимой.
Перерождение 'AIrb' - используется в руне подчинения. Воскрешает моба, из которого выпала эта руна в качестве лута. Лут указан в таблице предметов с выпадением шанса. Эта таблица связывает руну с мобом. При использований руны сможете призвать (воскресить) именно этого моба, который будет драться на вашей стороне.
-Если просто триггерно создать на карте, а потом подобрать и использовать. Не получится воскресить.
-Если переделать руну в обычный итем, и отдать мобу. А при убийстве подобрать и заюзать. Не получится воскресить.
-Если использовать Item pool. www.hiveworkshop.com/threads/itempools-guide.35180 Как оказалось, Item pool и таблица предметов с выпадением одно и то же, но чуть отличаются. Если задать в редакторе в свойствах выбранного юнита на карте таблицу с предметами, то работает. А триггерный аналог ItemPool никакой связи между руной и умирающим не образует, ItemPool только помогает рандомный итем достать и все =(. Получается тоже самое, при получений руна дропается, но она ничего не делает. только через таблицу в свойствах юнита можно задать.
Не ловится событием "юнит призывает боевую единицу". Зато, ловится событием "Юнит вошел в регион". Можно было просто запомнить и пересоздать триггерно этого юнита.
Злые духи (у орды)/ Москиты (у нежити) 'AOls'/'AUls' - При активации заклинания от кастера вылетают духи, которые высасывают у врагов хп. И отдают добытые хп кастеру, тем самым пополняя ему здоровье. Это особый призыв духов, но имеет некую особенность, событие триггеров "юнит - вызывает боевую единицу" не считает, что этих духов призвали. Словить можно по событию "юнит входит в регион ... ". Уход из мира живых (исчезновение) можно отследить с помощью "юнит умирает". Есть у духов способность "москиты" 'Aloc' (надеюсь знаете что это такое? это такая способность, которая скрывает полоску здоровья, делает юнитов невыделяемыми, позволяет проходить сквозь объекты. Часто эта способность используется dummy-unit. Имеет недостаток, на такого юнита нельзя натравить мышкой. Кстати, способность москиты 'Aloc' и способности 'AOls'/'AUls' тесно связаны между собой. Если удалить у призываемой саранчи способность "москиты" 'Aloc', то духи-саранчи при вызове перестают кружится, стоят на месте, короче, ничего не хотят делать. Давайте разберемся в характеристиках абилки, как она работает: "Число членов стаи" - максимум вызванных москитов, "Максимум членов стаи на цель" - максимальное возможное количество москитов, сфокусированных на одном юните. "Фактор возвращенного урона" - сколько процентов (%) урона, нанесенным москитом, превращается в здоровье, затем это здоровье отдаст кастеру при возврате к нему. "Порог возвращенного урона" - максимальное число похищенного здоровья одним москитом, необходимое для возврата к кастеру и передачи герою добытого здоровья. Если порог больше или равно кол-во похищенного хп, то москит отдаст здоровье кастеру. Москит может похитить здоровье у одной цели, если будет мало, полетит к следующей цели, и так будет накапливать похищенное здоровье. "Интервал отпускания боевой единицы" - единицы измерения (в секундах) - задержка между вызовом каждой новой саранчи. Чтобы было понятно: при вызыве появилась первая саранча, через 0.2 секунды появилась вторая, через 0.2 сек третья - и так пока все 20 не появятся. (по умолчанию количество вызванных единиц: 20, по умолчанию: 0.2 сек = >> 20 * 0.2 = 4 секунды, прежде чем последний москит появится, можно проверить дебагом). "Область воздействия" - радиус действия саранчи. показывает, как далеко саранча может отойти от заклинателя, она мгновенно возвращается, если расстояние между ее положением и заклинателем больше заданного значения. По поводу урона - урон наносят сами вызванные юниты, и весь наносимый ими урон является физическим уроном (наносится с руки), так как понижается защитой. Не сбивает текущий приказ кастера, кастер останавливается, чтобы юзнуть скилл, а потом продолжает делать дальше дела
Завод 'ANfy'/ Мини-завод 'ANsy'/'ANs1'/'ANs2'/'ANs3' - пассивка с иконкой, каждый раз создает новых маленьких заводных гоблинов. Интервал порождения - время, через которое создается новый гоблин. Есть "радиус подчинения" - если гоблин отойдет дальше этого радиуса от завода, то погибнет. Это очень похоже на призыв, там таймер жизни нацепляют, наносится дополнительный урон, как вызванным существам, от магических заклинаний. Но не ловится событием "юнит призвал боевую единицу", зато можно ловить по событию "юнит вошел в область". Неплохо сочетается со способностью "сбор" 'ARal', "Сборный пункт" - указываешь флаг в точку, где будет скапливаться все войско (как только появится рядом, он побежит к точке сбора).
Вообще есть ли такая которая делает чтобы призванное существо не умирало после смерти
Да почти все способности такие: призванное существо не умирает после смерти героя. Проверял. Есть исключение - это у трупоедов и зов возмездия. Если есть особые случаи не работы показывай, что не работает и так далее
ответ
Steal nerves:
тема абилки с зарядами. что-то код с мем хаком плодят разный
я эту фишку тестил. там по факту, значение меняется. Но визуально нет (не отрисовывается).

23

» WarCraft 3 / Как во время игры менять высоту юнита в игре?

Похожие вопросы:

ответ
l_Avenger_l, то есть по твоему переменные вида XH8 это нормально?
раз ты всё помнишь то скажи мне что делает следующий кусок кода
call KG8(GID)
call KG8(GJD)
call LT7(EC8)
call EA8(t)
короче вопрос закрыт по причине того что большая часть кода обфусцирована

23

» WarCraft 3 / Перенос карты с 1.26 на 1.31

Похожие вопросы:

ответ
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.

BartSi, каким конвертером 1.31 -> 1.26 пользовался?

Hodor, твой конвертер случайно не шаманит с камерами?

23

» WarCraft 3 / Экран статистики

Похожие вопросы:

ответ
скопировать путь отсюда - дело 5 секунд

а так придется реимпортировать иконки в карту и писать им свой путь, в итоге вырастет вес
и никому это не нужно
ответ
свой события конец игры
очишаем все героя после смены нетралов..
триггер конец игры
ответ
К сожалению, никак, можно воздействовать только на ресурсы и героев (удалением их или передачей нейтральному) на экране статистики.
ответ
PT153, Отличный троллинг, нужно заменить текстуру
UI\Glues\ScoreScreen\ScoreScreen-Defeat\scorescreen-defeat.blp
UI\Glues\ScoreScreen\ScoreScreen-ТвояРассаVictory\scorescreen-ТвояРассаvictory.blp

23

» WarCraft 3 / Не сохраняются триггеры

Похожие вопросы:

ответ
8gabriel8, довольно много. Разбиение на отдельные триггеры может помочь от проблем с лимитом операций, но если в этом коде нет циклов, то оно практически бессмысленно. Ради интереса можешь попробовать сохранить карту с конвертированными триггерами, вдруг причина в модуле редактора, который за отрисовку GUI отвечает.
ответ
Steal nerves:
тема абилки с зарядами. что-то код с мем хаком плодят разный
я эту фишку тестил. там по факту, значение меняется. Но визуально нет (не отрисовывается).
ответ
Проблема решилась переустановкой, но немного позже заметил ее источник:
"Enable Init function checking" в расширенных настройках. Без понятия, как она включилась, ну да ладно.
ответ
Уже ничего не поделаешь, скорее всего. На будущее - не давать областям и другим объектам названий на русском.

23

» WarCraft 3 / Редактор ИИ: Не видит нестандартные войска

Похожие вопросы:

ответ
The Dude, это несерьезно. Все вопросы описаны в большом количестве статей здесь, на нашем сайте - xgm.guru/p/wc3/articles. То, что перечисляешь не верх мастерства WE, а базовые знания. Материалов предостаточно. Успехов в обучении.

23

» WarCraft 3 / Как отследить удар?

Похожие вопросы:

ответ
Steal nerves:
Критический удар от способности? Вот урон можно отследить. А вот от способности - вряд ли. Там урон от самого юнита + критический урон от абилки. Проще собственный критический урон сделать.
вот на гуи пример
вот отлов урона
вот поисковик нашел (кажется видел твою проблему)
ответ
Каждую секунду пикаешь юнитов по всей карте,если есть бафф то дать способность если нету баффа и есть способность (крита) то удалить способность
ответ
Убери Wait во 2 триггере, во-первых.
В 1 триггере поставь действие TurnOn (включить) триггер 2 (на втором триггере нажми правой кнопкой и выбери изначально включён. У тебя вроде как действие Run, я так понимаю, просто у меня на англ WE.
Во втором триггере поставь событие Время Pereodic 0.02 сек.
Сделай условие, если в точке твоего двигаемого юнита тип проходимости Ходьба, то: дальше выключает этот триггер и делаешь другие свои действия, ьам звук добавляешь и т.д.
А вообще, судя по скринам твоих триггеров, ты ещё очень далёк от создания даже триггерных способностей.
Советую, лучше изучи какие бывают События, Действия и Условия, и что они делают.
Мышкоблудка:
Такие сложные вещи лучше наверно на jass делать, хоть это сложнее будет
Ты, конечно, колоссально помог в вопросе, но я открою тебе секрет: ничего тут сложного, на ГУИ изи делается, как и большинство других скилов.
ответ
Триггер 1
Событие - Юнит заходит в область (вся карта)
Действие - Добавить в триггер 2 событие "Входящий юнит получает урон"
Триггер 2
Действие - Твои действия
(Атакованный юнит отлавливается как Attacked unit, атакующий - Damage Source)
ответ
С помощью мемхака - внутригровое событие (юнит успешно завершил атаку)